import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.WebContext;
import org.thymeleaf.templateresolver.ServletContextTemplateResolver;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/HelloThymeleaf")
public class HelloThymeleafServlet extends HttpServlet {
    //模板引擎
    private TemplateEngine engine=new TemplateEngine();

    @Override
    //就做了一件事解析模板后加载到模板引擎中
    public void init() throws ServletException {
        //完成Thymeleaf的初始化工作
        //创建一个模板解析器
        ServletContextTemplateResolver resolver=new ServletContextTemplateResolver(this.getServletContext());
        //让模板解析器来加载模板
        //这里设置前缀后缀，要加载那些文件在模板引擎中
        resolver.setPrefix("/WEB-INF/template/");
        resolver.setSuffix(".html");
        resolver.setCharacterEncoding("utf-8");
        //把解析对象，给设置到engine对象中
        engine.setTemplateResolver(resolver);
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //0.初始化
        //创建出一个模板引擎的对象TemplateEngine engine
        //创建一个解析模板对象ServletContextTemplateResolver resolver
        //解析完后放入模板引擎中
        //1.处理请求，渲染模板
        //服务器这边用WebContext进行处理，new出来后给他设置一个键值对
        // 一个对应的是html那边的，另一个对应到服务器这边
        String message=req.getParameter("message");
        WebContext webContext=new WebContext(req,resp,this.getServletContext());
        webContext.setVariable("message",message);
        //2.进行最终渲染
        //用模板引擎进行处理，将解析的模板和服务器提供的WebContext传入其中即可
        String html=engine.process("hello",webContext);
        System.out.println(html);
        resp.getWriter().write(html);
    }
}
